#pragma once

#include "Effect.h"

#include <string>
using namespace std;

/* ResizeEffect class
 * inherits the interface from Effect
 * usec the opencv resize function
 */
class ResizeEffect : public Effect{
public:
    /* ResizeEffect c'tor
     * validates the parameters and saves them for later use
     */
	ResizeEffect(string scaleFactorX, string scaleFactorY, string interpolation);
    /* runs resize on the given matrix.
     * returns a new Matrix with the manipulated
     * throws: only opencv exceptions
     * interpolation should be one of:
     *      x INTER_NEAREST
     *      x INTER_LINEAR
     *      x INTER_AREA
     *      x INTER_CUBIC
     *      x INTER_LANCZOS4
     */    
    virtual Mat run(const Mat& src);
private:
    double scaleFactorX;
    double scaleFactorY;
    int interpolation;
};
